package com.chat.login.config;

import com.google.code.kaptcha.Producer;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

@Configuration
public class KaptchaConfig {
    @Bean
    public Producer kaptchaProducer() {
        // 创建一个DefaultKaptcha对象，这是Kaptcha验证码生成器的默认实现
        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
        // 创建一个Properties对象，用于存储Kaptcha的配置
        Properties properties = new Properties();
        // 设置验证码图片的边框，"yes"表示有边框，"no"表示无边框
        properties.setProperty("kaptcha.border", "no");
        // 设置验证码图片边框的颜色，颜色的RGB值为105,179,90
        properties.setProperty("kaptcha.border.color", "105,179,90");
        // 设置验证码文本的颜色，颜色的RGB值为黑色，以增加对比度
        properties.setProperty("kaptcha.textproducer.font.color", "black");
        // 设置验证码图片的宽度，单位为像素
        properties.setProperty("kaptcha.image.width", "125");
        // 设置验证码图片的高度，单位为像素
        properties.setProperty("kaptcha.image.height", "50");
        // 设置验证码文本在会话中的键
        properties.setProperty("kaptcha.session.key", "code");
        // 设置验证码文本的长度，即验证码中的字符数量
        properties.setProperty("kaptcha.textproducer.char.length", "4");
        // 设置验证码文本的字体，可以设置多个字体，用逗号分隔
        properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");
        // 设置验证码图片的背景颜色，颜色的RGB值为浅灰色，以增加对比度
        properties.setProperty("kaptcha.background.color", "lightgray");
        // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy
        properties.setProperty("kaptcha.obscurificator.impl", "com.google.code.kaptcha.impl.ShadowGimpy");
        //干扰颜色
        properties.setProperty("kaptcha.noise.color", "black");
        properties.put("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise"); //干状线
        properties.put("kaptcha.background.clear.from", "232,240,254");//渐变色
        properties.put("kaptcha.background.clear.to", "232,240,254");
        properties.put("kaptcha.textproducer.char.space", "2");
        // 创建一个Config对象，并将Kaptcha的配置传递给它
        Config config = new Config(properties);
        // 将Config对象设置为DefaultKaptcha对象的配置
        defaultKaptcha.setConfig(config);

        return defaultKaptcha;
    }
}
